package com.ruoyi.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.system.dto.AcceptanceChecklistTemplateCreateDTO;
import com.ruoyi.system.vo.AcceptanceChecklistTemplateVO;

import java.util.List;

/**
 * 验收单模板服务接口
 * 
 * @author ruoyi
 * @since 2024-01-01
 */
public interface AcceptanceChecklistTemplateService {

    /**
     * 创建验收单模板
     * 
     * @param createDTO 创建参数
     * @return 模板ID
     */
    Long createTemplate(AcceptanceChecklistTemplateCreateDTO createDTO);

    /**
     * 更新验收单模板
     * 
     * @param templateId 模板ID
     * @param createDTO 更新参数
     * @return 更新结果
     */
    Boolean updateTemplate(Long templateId, AcceptanceChecklistTemplateCreateDTO createDTO);

    /**
     * 删除验收单模板
     * 
     * @param templateId 模板ID
     * @return 删除结果
     */
    Boolean deleteTemplate(Long templateId);

    /**
     * 获取验收单模板详情
     * 
     * @param templateId 模板ID
     * @return 模板详情
     */
    AcceptanceChecklistTemplateVO getTemplateDetail(Long templateId);

    /**
     * 分页查询验收单模板
     * 
     * @param projectId 项目ID
     * @param stageId 阶段ID
     * @param templateName 模板名称
     * @param status 状态
     * @param pageNum 页码
     * @param pageSize 页大小
     * @return 分页结果
     */
    Page<AcceptanceChecklistTemplateVO> pageTemplates(Long projectId, Long stageId, String templateName, Integer status, int pageNum, int pageSize);

    /**
     * 根据项目和阶段获取启用的验收单模板
     * 
     * @param projectId 项目ID
     * @param stageId 阶段ID
     * @return 模板列表
     */
    List<AcceptanceChecklistTemplateVO> getEnabledTemplatesByProjectStage(Long projectId, Long stageId);

    /**
     * 启用/禁用验收单模板
     * 
     * @param templateId 模板ID
     * @param status 状态
     * @return 操作结果
     */
    Boolean updateTemplateStatus(Long templateId, Integer status);
}
